home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / gnu / emacs.lha / emacs-19.16 / src / disptab.h < prev    next >
C/C++ Source or Header  |  1993-05-22  |  3KB  |  89 lines

  1. /* Things for GLYPHS and glyph tables.
  2.    Copyright (C) 1993 Free Software Foundation, Inc.
  3.  
  4. This file is part of GNU Emacs.
  5.  
  6. GNU Emacs is free software; you can redistribute it and/or modify
  7. it under the terms of the GNU General Public License as published by
  8. the Free Software Foundation; either version 1, or (at your option)
  9. any later version.
  10.  
  11. GNU Emacs is distributed in the hope that it will be useful,
  12. but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. GNU General Public License for more details.
  15.  
  16. You should have received a copy of the GNU General Public License
  17. along with GNU Emacs; see the file COPYING.  If not, write to
  18. the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  19.  
  20. /* Access the slots of a display-table, according to their purpose.  */
  21.  
  22. #define DISP_TABLE_SIZE 261
  23. #define DISP_TRUNC_GLYPH(dp) ((dp)->contents[256])
  24. #define DISP_CONTINUE_GLYPH(dp) ((dp)->contents[257])
  25. #define DISP_ESCAPE_GLYPH(dp) ((dp)->contents[258])
  26. #define DISP_CTRL_GLYPH(dp) ((dp)->contents[259])
  27. #define DISP_INVIS_VECTOR(dp) ((dp)->contents[260])
  28. #define DISP_CHAR_VECTOR(dp, c) ((dp)->contents[c])
  29.  
  30. extern struct Lisp_Vector *window_display_table ();
  31.  
  32. /* Display table to use for vectors that don't specify their own.  */
  33. extern Lisp_Object Vstandard_display_table;
  34.  
  35. /* Vector of GLYPH definitions.  Indexed by GLYPH number,
  36.    the contents are a string which is how to output the GLYPH.  */
  37. extern Lisp_Object Vglyph_table;
  38.  
  39. /* Return the current length of the GLYPH table,
  40.    or 0 if the table isn't currently valid.  */
  41. #define GLYPH_TABLE_LENGTH  \
  42.   ((XTYPE (Vglyph_table) == Lisp_Vector) \
  43.    ? XVECTOR (Vglyph_table)->size : 0)
  44.  
  45. /* Return the current base (for indexing) of the GLYPH table,
  46.    or 0 if the table isn't currently valid.  */
  47. #define GLYPH_TABLE_BASE  \
  48.   ((XTYPE (Vglyph_table) == Lisp_Vector) \
  49.    ? XVECTOR (Vglyph_table)->contents : 0)
  50.  
  51. /* Given BASE and LEN returned by the two previous macros,
  52.    return nonzero if the GLYPH code G should be output as a single
  53.    character with code G.  Return zero if G has a string in the table.  */
  54. #define GLYPH_SIMPLE_P(base,len,g)  \
  55.   ((g) >= (len) || XTYPE (base[g]) != Lisp_String)
  56.  
  57. /* Given BASE and LEN returned by the two previous macros,
  58.    return nonzero if GLYPH code G is aliased to a different code.  */
  59. #define GLYPH_ALIAS_P(base,len,g)  \
  60.   ((g) < (len) && XTYPE (base[g]) == Lisp_Int)
  61.  
  62. /* Assuming that GLYPH_SIMPLE_P (BASE, LEN, G) is 1,
  63.    return the alias for G.  */
  64. #define GLYPH_ALIAS(base, g) XINT (base[g])
  65.  
  66. /* Follow all aliases for G in the glyph table given by (BASE,
  67.    LENGTH), and set G to the final glyph.  */
  68. #define GLYPH_FOLLOW_ALIASES(base, length, g)                \
  69.   while (GLYPH_ALIAS_P ((base), (length), (g)))                \
  70.     (g) = GLYPH_ALIAS ((base), (g));
  71.   
  72. /* Assuming that GLYPH_SIMPLE_P (BASE, LEN, G) is 0,
  73.    return the length and the address of the character-sequence
  74.    used for outputting GLYPH G.  */
  75. #define GLYPH_LENGTH(base,g)   XSTRING (base[g])->size
  76. #define GLYPH_STRING(base,g)   XSTRING (base[g])->data
  77.  
  78. /* GLYPH for a space character.  */
  79.  
  80. #define SPACEGLYPH 040
  81. #define NULL_GLYPH 00
  82.  
  83. #define GLYPH_FROM_CHAR(c) (c)
  84.  
  85. extern int glyphlen ();
  86. extern void str_to_glyph_cpy ();
  87. extern void str_to_glyph_ncpy ();
  88. extern void glyph_to_str_cpy ();
  89.